Syslogログシステム-インタフェースの設計
19028 ワード
データインタフェースの返信メッセージ
データインタフェース呼び出しは常に上記のメッセージ形式JSONデータを返し、ここでのフィールド設計はlayuiのデータテーブル取数インタフェースを互換化するためである.
コードフィールド
インタフェースが正常に返された場合は0、呼び出しエラーが発生した場合は0ではありません.
msgフィールド
インタフェース呼び出しのメッセージ情報は,呼び出しエラーが発生した場合にエラー記述情報であり,直感的で友好的な情報をユーザに直接表示できることを提案する.
dataフィールド
インタフェース呼び出しが返すビジネスデータ
countフィールド
データのページングで使用する、データの合計行数、layuiデータテーブルコンポーネントに必要なフィールド
ログインインタフェースの例
ログイン成功
ログイン失敗
データインタフェースのトークンtokenメカニズム
ログインインタフェースを呼び出し、ログインに成功した後、トークンtokenを返し、その後、トークンをパラメータとして後続のインタフェースをさらに呼び出します.tokenパラメータは、getリクエストとの競合を回避するために@RequestHeader転送を推奨します.セキュリティ・レベルに応じてインタフェースを2つに分類できます.トークンtokenは不要です.トークンtokenは必要ありません.
ログインインタフェースサンプルコード
トークンtokenが必要なインタフェースのサンプルコード
@IgnoreTokenとSpringのAOPメカニズム
@IgnoreTokenタグインタフェースでトークンを検証する必要があるかどうか、Springフレームワークで共通の接面を定義し、権限の統一検証を簡単に実現します.@IgnoreRuleタグインタフェースは、インタフェース権限をさらに検証する必要があるかどうか.
{
"code": 0,
"count": 0,
"data": {},
"msg": "string"
}
データインタフェース呼び出しは常に上記のメッセージ形式JSONデータを返し、ここでのフィールド設計はlayuiのデータテーブル取数インタフェースを互換化するためである.
コードフィールド
インタフェースが正常に返された場合は0、呼び出しエラーが発生した場合は0ではありません.
msgフィールド
インタフェース呼び出しのメッセージ情報は,呼び出しエラーが発生した場合にエラー記述情報であり,直感的で友好的な情報をユーザに直接表示できることを提案する.
dataフィールド
インタフェース呼び出しが返すビジネスデータ
countフィールド
データのページングで使用する、データの合計行数、layuiデータテーブルコンポーネントに必要なフィールド
ログインインタフェースの例
ログイン成功
{
"code": 0,
"msg": "",
"data": {
"password": "e10adc3949ba59abbe56e057f20f883e",
"user": "admin",
"token": "3b9ce276b01c46d3be5ffc75698782d2"
},
"count": 0
}
ログイン失敗
{
"msg": " !",
"code": -1
}
データインタフェースのトークンtokenメカニズム
ログインインタフェースを呼び出し、ログインに成功した後、トークンtokenを返し、その後、トークンをパラメータとして後続のインタフェースをさらに呼び出します.tokenパラメータは、getリクエストとの競合を回避するために@RequestHeader転送を推奨します.セキュリティ・レベルに応じてインタフェースを2つに分類できます.トークンtokenは不要です.トークンtokenは必要ありません.
ログインインタフェースサンプルコード
@ApiOperation(value = " ")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = " ", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "password", value = " ", dataType = "String", paramType = "query")
})
@RequestMapping(path = "/sys/login", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
@IgnoreToken
public ResponseData login(@RequestParam String user, @RequestParam String password) {
Map<String, Object> map = sysService.login(user, password);
return ResponseData.success(map);
}
トークンtokenが必要なインタフェースのサンプルコード
@ApiOperation(value = " ")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = " ", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "userName", value = " ", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "password", value = " ", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "fullName", value = " ", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "remark", value = " ", dataType = "String", paramType = "query")
})
@RequestMapping(path = "/sys/addUser", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public ResponseData addUser(@RequestHeader String token, @RequestParam String userName, @RequestParam String password, @RequestParam(required = false) String fullName, @RequestParam(required = false) String remark){
throw new SysException(" !");
}
@IgnoreTokenとSpringのAOPメカニズム
@IgnoreTokenタグインタフェースでトークンを検証する必要があるかどうか、Springフレームワークで共通の接面を定義し、権限の統一検証を簡単に実現します.@IgnoreRuleタグインタフェースは、インタフェース権限をさらに検証する必要があるかどうか.
@Before("execution(* syslog.controller.*.*(..)) && !@annotation(syslog.IgnoreToken)")
public void checkToken(JoinPoint jp) throws Throwable {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String token = request.getHeader("token");
//
SessionUtil.checkSession(token);
//
MethodInvocationProceedingJoinPoint methodPoint = (MethodInvocationProceedingJoinPoint)jp;
Field field = methodPoint.getClass().getDeclaredField("methodInvocation");
field.setAccessible(true);
ReflectiveMethodInvocation invocation = (ReflectiveMethodInvocation) field.get(methodPoint);
Method method = invocation.getMethod();
//
IgnoreRule ignoreRule = method.getDeclaredAnnotation(IgnoreRule.class);
if (ignoreRule != null)
return;
String className = jp.getTarget().getClass().getName();
String methodName = method.getName();
String ruleName = className + "." + methodName;
sysService.checkRule(token, ruleName);
}