也许这是一个微不足道的情况,但它对我来说很困惑,我需要一些澄清,如何以正确的方式处理它。
为了简单起见,模型如下:
(User被分配给许多项目,且project有许多用户被分配给)。
null
…\Api\v1\Projects\{projectId}\users\{userId}
允许两个http操作:
API控制器使用服务层来执行这些操作。服务接口为休闲状态:
void projectService.assignUser(int projectId, int userId)
void projectService.dismissUser(int projectId, int userId)
服务使用dbContext来执行这些操作。
问题1:哪个元素应该负责检查projectId和userId是否正确?IMHO最好把这个逻辑放在服务层,因为它可以重用。
问题2:如果projectId和userid不正确(例如:project/user不存在或不允许赋值),这些方法应该返回什么?
我的第一个想法是返回空值,但我认为这没有太大意义。主要是因为如果enitiyId不正确,service中的类似方法将返回null。例如:ProjectService.GetProject(projectId)如果项目不存在,则返回null
第二个方法是回击布尔。False至少有一个参数不正确
第三个想法是用Message抛出ArgumentException。它似乎是好的,但它使api控制器捕捉异常。
答案1:您应该不断验证ProjectId/UserID到服务层以供重用,并在任何需要的地方调用这些函数。
答案2:基于valid/invalid projectid/userid创建一个json。它可能包含与用户或项目相关的详细信息(如果两者都有效),并且在Id无效的情况下返回错误消息和错误Id(例如1表示无效的项目,2表示无效的用户)。
a)JsonObject ProjectService.AssignUser(int projectId,int userId)
EG:br>有效ID(两者):
stat":“OK”,“userId”:“userId here”,“projectId”:“projectId here}
无效的项目ID:
null
b.JsonObject ProjectService.DispersUser(int projectId,int userId)
有效ID(两者):
状态“:”OK}
无效的用户ID:
ErrorMsg:无效的用户ID,Stat:FaileError:2}
Q1)我认为将它们放置在服务层是一个有效的想法,我可以想到许多您可能想要重用这些方法的场景。
null
public class BusinessLogicMessage<T> where T : new()
{
public BusinessLogicMessage(T result)
{
Result = result;
Status = BusinessLogicStatus.Success;
Message = string.Empty;
}
public BusinessLogicMessage(T result, BusinessLogicStatus status, string message)
{
Result = result;
Status = status;
Message = message;
}
public BusinessLogicStatus Status { get; set; }
public string Message { get; set; }
public T Result { get; set; }
}
public class BusinessLogicMessage
{
public BusinessLogicMessage()
{
Status = BusinessLogicStatus.Success;
Message = string.Empty;
}
public BusinessLogicMessage(BusinessLogicStatus status, string message)
{
Status = status;
Message = message;
}
public BusinessLogicStatus Status { get; set; }
public string Message { get; set; }
}
public enum BusinessLogicStatus
{
Success,
Failure,
Warning
}
因此,如果方法成功,只需返回类的默认构造函数,该构造函数的状态为“成功”。如果失败或其他情况发生,您可以添加详细信息。如果需要为该方法返回特殊结果对象,则可以将其附加到结果
我的两分钱。
更新为更好的答案。
Controller控制器 第一个控制器 {#1第一个控制器} <?php namespace src\Web\Controller\Group; use Controller; use Request; use JsonResponse; class GroupController extends Controller { public function indexAction()
问题内容: 在课堂上,我们现在学习如何构建Spring应用程序,即使没有直接涉及spring,我们也学习了如何为DAO和服务层对象创建接口。 如果我错了,请纠正我:DAO层是非常抽象的:它仅包含CRUD操作,并进一步用于读取数据(即:获取所有对象,获取特定对象等) 服务层:包含用于创建事物和删除事物的服务,这是业务逻辑应该存在的地方。 现在,所有这些对于服务层来说都是有意义的。除了“更新”对象。你
控制器 控制器名称空间前缀统一为 “{$APPLICATION_DIR}Controller,即系统默认应用目录为App,那幺所有的控制器均应在/App/Controller目录下。 所有的控制器都应继承CoreAbstraceInterfaceAbstractController。 关于AbstractController中的抽象方法 easyswoole中,任何控制器都需继承AbstractC
Rest is not idleness, and to lie sometimes on the grass under trees on a summer’s day, listening to the murmur of the water, or watching the clouds float across the sky, is by no means a waste of time
在相当长的一段时间里,我试图找出在Spring MVC应用程序中应该在哪里对用户输入进行验证。在许多在线博客和教程中,我基本上读到控制器应该验证用户的输入,如果无效,则通过显示包含错误消息的页面来响应用户。然而,我目前对Spring和Spring MVC分层系统的理解是,控制器只是应用程序逻辑(服务层)和“Web世界”之间的一个浅层接口,允许从Web使用服务层。而且,就我所见,Spring MVC
ThinkCMF Api有几个基类控制器,cmf\controller\RestBaseController,cmf\controller\RestUserBaseController,cmf\controller\RestAdminBaseController,基类增加一些统一的方法,和登录认证相关的基础操作。 api 基类控制器 RestBaseController RestBaseContr