API端点参考.md 12 KB

API端点参考

本文档引用的文件

  • Application.java
  • SaTokenConfigure.java
  • GlobalExceptionHandler.java
  • Response.java
  • Constants.java
  • PatentController.java
  • PatentProjectController.java
  • NoveltyProjectController.java
  • ReportProjectController.java
  • AddNoveltyProjectDTO.java
  • QueryNoveltyProjectVO.java

目录

  1. 简介
  2. API基础信息
  3. 认证机制
  4. 错误处理
  5. 专利管理API
  6. 项目管理API
  7. 查新分析API
  8. 报告生成API
  9. 附录

简介

本文档详细记录了PAS系统的所有公共API端点,涵盖了专利管理、项目管理、查新分析和报告生成等主要功能模块。文档系统性地描述了每个RESTful API的HTTP方法、URL路径、请求参数、请求体结构和响应体结构,并提供了curl命令示例和实际的请求/响应JSON样例。

API基础信息

基础URL

所有API端点的基础URL为:http://<服务器地址>:8879/api/xiaoshi

版本信息

当前API版本为v2,所有端点均位于/api/xiaoshi路径下。

请求/响应格式

  • 请求格式:所有请求数据均以JSON格式通过请求体传递
  • 响应格式:所有响应数据均以JSON格式返回,遵循统一的响应结构
erDiagram
RESPONSE {
integer code
object data
string message
}

图源

  • Response.java

认证机制

SaToken认证

PAS系统使用SaToken框架进行身份验证和权限控制。所有需要认证的API端点都要求在请求头中包含有效的token。

认证配置

根据SaTokenConfigure.java文件,系统配置了以下认证规则:

  • 需要认证的路径:/api/xiaoshi/**
  • 无需认证的排除路径:
    • /api/xiaoshi/ws/**
    • /api/xiaoshi/test/**
    • /api/xiaoshi/oauth2/**
    • /api/xiaoshi/admin/**
    • /api/xiaoshi/common/download
    • /api/xiaoshi/common/export

请求头要求

所有需要认证的请求必须包含以下HTTP头:

Authorization: Bearer <token>

token: <token>

其中<token>是通过登录接口获取的有效认证令牌。

章节源

  • SaTokenConfigure.java
  • Constants.java

错误处理

统一响应格式

PAS系统使用统一的响应格式来处理成功和错误响应。所有API响应都遵循Response类的结构:

public class Response {
    private Integer code;
    private Object data;
    private String message;
}

自定义异常

系统定义了多种自定义异常,通过GlobalExceptionHandler进行全局处理:

XiaoShiException

  • 用于处理业务逻辑异常
  • 包含错误代码和错误消息
  • GlobalExceptionHandler中被捕获并转换为标准化的错误响应

UnLoginException

  • 用于处理未登录异常
  • 当用户未认证或token无效时抛出
  • 返回401状态码和"未登录"消息

全局异常处理器

GlobalExceptionHandler类负责处理所有未捕获的异常,并返回标准化的错误响应:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = {XiaoShiException.class})
    @ResponseBody
    public Response handleAllExceptions(XiaoShiException ex) {
        return Response.error(ex.getErrorCode(), ex.getErrorMessage());
    }

    @ExceptionHandler(value = {UnLoginException.class})
    @ResponseBody
    public Response handleAllExceptions(UnLoginException ex) {
        return Response.error("401", "未登录");
    }
}

标准错误码

错误码 描述 说明
200 成功 请求成功处理
401 未登录 用户未认证或token无效
500 服务器错误 服务器内部错误
其他 业务错误 具体业务逻辑错误代码

章节源

  • GlobalExceptionHandler.java
  • Response.java

专利管理API

查询专利

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patent/queryPatent
  • 认证要求: 是
  • 请求体: StringRequest对象
  • 响应体: Response对象,包含Records数据

curl示例

curl -X POST http://localhost:8879/api/xiaoshi/patent/queryPatent \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"query": "query string"}'

请求JSON示例

{
  "query": "查询条件"
}

响应JSON示例

{
  "code": 200,
  "data": {
    "total": 10,
    "list": [...]
  },
  "message": "成功"
}

查询专利详情

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patent/selectPatentDetail
  • 认证要求: 是
  • 请求体: PatentNoVO对象
  • 响应体: Response对象,包含PatentColumnDTO数据

curl示例

curl -X POST http://localhost:8879/api/xiaoshi/patent/selectPatentDetail \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"patentNo": "CN123456789A"}'

章节源

  • PatentController.java

项目管理API

查询专利数据库

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patentProject/queryPatentProject
  • 认证要求: 是
  • 请求体: StringRequest对象
  • 响应体: Response对象,包含Records数据

添加专利数据库

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patentProject/addPatentProject
  • 认证要求: 是
  • 请求体: PatentProjectDTO对象
  • 响应体: Response对象,包含新增记录的ID

更新专利数据库

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patentProject/updatePatentProject
  • 认证要求: 是
  • 请求体: UpdatePatentProjectDTO对象
  • 响应体: Response对象,包含更新记录的ID

删除专利数据库

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/patentProject/deletePatentProject
  • 认证要求: 是
  • 请求体: 整数ID列表
  • 响应体: Response对象,包含操作结果消息

章节源

  • PatentProjectController.java

查新分析API

添加查新检索报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/noveltyProject/addNoveltyProject
  • 认证要求: 是
  • 请求体: AddNoveltyProjectDTO对象
  • 响应体: Response对象,包含新增报告的ID

AddNoveltyProjectDTO结构

@Data
public class AddNoveltyProjectDTO {
    private String customCaseNumber;
    private String innerCaseNumber;
    private String applicants;
    private String inventor;
    private String ipr;
    private String technicalContact;
    private String searchUnit;
    private String searchUnitContact;
    private String caseName;
    private String searchReviewer;
    private String preliminaryConclusions;
    private String ifPatentability;
    private String applicationAdvice;
    private String applicationRemark;
    private String replenishMeans;
    private String writeAdvice;
    private Integer projectId;
    private Integer entrustType;
    private String entrustId;
    private String entrustName;
    private String headId;
    private String departmentId;
}

curl示例

curl -X POST http://localhost:8879/api/xiaoshi/noveltyProject/addNoveltyProject \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "caseName": "查新报告1",
    "applicants": "申请人A",
    "inventor": "发明人B",
    "projectId": 123
  }'

请求JSON示例

{
  "caseName": "查新报告1",
  "applicants": "申请人A",
  "inventor": "发明人B",
  "projectId": 123,
  "entrustType": 1
}

响应JSON示例

{
  "code": 200,
  "data": 456,
  "message": "成功"
}

查询查新检索报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/noveltyProject/queryNoveltyProject
  • 认证要求: 是
  • 请求体: StringRequest对象
  • 响应体: Response对象,包含Records数据

编辑查新检索报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/noveltyProject/updateNoveltyProject
  • 认证要求: 是
  • 请求体: AddNoveltyProjectDTO对象(包含ID)
  • 响应体: Response对象,包含更新报告的ID

删除查新检索报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/noveltyProject/deleteNoveltyProject
  • 认证要求: 是
  • 请求体: NoveltyProjectIdDTO对象
  • 响应体: Response对象,包含操作结果消息

章节源

  • NoveltyProjectController.java
  • AddNoveltyProjectDTO.java

报告生成API

查询报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/reportProject/queryReportProject
  • 认证要求: 是
  • 请求体: StringRequest对象
  • 响应体: Response对象,包含Records数据

添加报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/reportProject/addReportProject
  • 认证要求: 是
  • 请求体: ReportProjectDTO对象
  • 响应体: Response对象,包含新增报告的ID

更新报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/reportProject/updateReportProject
  • 认证要求: 是
  • 请求体: UpdateReportProjectDTO对象
  • 响应体: Response对象,包含更新报告的ID

删除报告

  • HTTP方法: POST
  • URL路径: /api/xiaoshi/reportProject/deleteReportProject
  • 认证要求: 是
  • 请求体: 整数ID列表
  • 响应体: Response对象,包含操作结果消息

章节源

  • ReportProjectController.java

附录

常用常量

Constants.java中定义了系统常用常量:

public class Constants {
    public static final String API_XiaoSHI = "/api/xiaoshi";
    public static final String ADMIN_USERNAME = "admin";
    public static final String PROJECT_INFO_FILE_NAME = "project.json";
    // ... 其他常量
}

响应枚举

ResponseEnum类定义了系统响应码和消息:

public enum ResponseEnum {
    SUCCESS(200, "成功"),
    ERROR(500, "失败"),
    UNAUTHORIZED(401, "未登录"),
    NO_PERMISSION(403, "无权限"),
    CONDITION_ERROR(400, "条件错误");
    
    private final Integer code;
    private final String message;
    
    ResponseEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    
    // getter方法
}

章节源

  • Constants.java
  • Response.java