福建漳州网站建设哪家便宜,晋中网站建设,江西省建设工程协会网站查询,会展设计就业方向本教程提供了有关如何使用Spring Boot构建Restfull Web服务的分步指南。 先决条件#xff1a; Eclipse IDE#xff08;最新版本#xff09; Maven的4 Java 1.8 1.创建Maven Web项目 打开eclipse#xff0c;然后创建一个新的Maven Web项目#xff0c;并将其命名为Spri… 本教程提供了有关如何使用Spring Boot构建Restfull Web服务的分步指南。 先决条件 Eclipse IDE最新版本 Maven的4 Java 1.8 1.创建Maven Web项目 打开eclipse然后创建一个新的Maven Web项目并将其命名为SpringBootRest。 生成的项目的结构如下所示 2. pom.xml 创建Web项目之后第一步是在pom.xml内配置Spring Boot 因此我们将以下内容添加为父依赖项 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.10.RELEASE/version
/parent Spring Boot公开了一个名为spring-boot-starter-web的启动程序依赖项该依赖项会自动导入开发和公开REST控制器所需的所有必需jar。 因此我们将其添加为依赖项 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency 在本教程中我们使用Spring Boot提供的嵌入式tomcat因此我们将包装属性设置为jar从而将应用程序构建为可运行的jar文件 packagingjar/packaging PS如果要使用外部tomcat请参阅“在外部tomcat上部署Spring Boot应用程序” 。 最后的配置步骤是添加Spring Boot插件 buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build 从字面上看这就是我们开始开发REST控制器所需要的。 以下是Spring Boot自动导入的jar 这是整个pom.xml供参考 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.programmer.gate/groupIdartifactIdSpringBootRest/artifactIdpackagingjar/packagingversion0.0.1-SNAPSHOT/versionnameSpringBootRest/namepropertiesmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/propertiesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.10.RELEASE/version/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project3. Application.java 第二步是创建Spring Boot初始化器类这是我们应用程序的入口。 用SpringBootApplication注释类等效于在传统的Spring应用程序中使用ConfigurationEnableAutoConfiguration和ComponentScan及其默认属性。 package com.programmer.gate;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class Application{public static void main(String[] args) {SpringApplication.run(Application.class, args);}
} PS默认情况下servlet容器会自动扫描在初始化程序的同一程序包中定义的REST控制器该程序包外部定义的任何控制器都将被忽略。 4.实施REST资源 我们将实现一个非常基本的支付API向客户收取购买商品的费用。 感谢jackson库我们的API仅接受JSON请求并以JSON响应进行响应这使我们能够将请求和响应作为POJO类处理而不必担心JSON / POJO转换。 以下是客户应在每个付款请求上提交的付款请求类别 package com.programmer.gate;public class PaymentRequest {private int userId;private String itemId;private double discount;public String getItemId() {return itemId;}public void setItemId(String itemId) {this.itemId itemId;}public double getDiscount() {return discount;}public void setDiscount(double discount) {this.discount discount;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId userId;}} 这是从我们的服务返回的基本响应 package com.programmer.gate;public class BaseResponse {private String status;private Integer code;public String getStatus() {return status;}public void setStatus(String status) {this.status status;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}} 现在我们定义下com.programmer.gate命名为PaymentController控制器 package com.programmer.gate;import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/payment)
public class PaymentController {private final String sharedKey SHARED_KEY;private static final String SUCCESS_STATUS success;private static final String ERROR_STATUS error;private static final int CODE_SUCCESS 100;private static final int AUTH_FAILURE 102;RequestMapping(value /pay, method RequestMethod.POST)public BaseResponse pay(RequestParam(value key) String key, RequestBody PaymentRequest request) {BaseResponse response new BaseResponse();if(sharedKey.equalsIgnoreCase(key)){int userId request.getUserId();String itemId request.getItemId();double discount request.getDiscount();// Process the request// ....// Return success response to the client.response.setStatus(SUCCESS_STATUS);response.setCode(CODE_SUCCESS);}else{response.setStatus(ERROR_STATUS);response.setCode(AUTH_FAILURE);}return response;}
} 我们的控制器提供的唯一服务是pay方法该方法看起来非常简单它使用预定义的共享密钥验证客户端请求处理请求并以操作状态进行响应。 以下是控制器使用的常见注释 RestController此注释将类标记为资源它隐式定义了Controller和ResponseBody mvc注释当使用RestController注释类时 无需在方法返回的POJO类旁边编写ResponseBody 。 RequestMapping除了方法类型 GET / POST之外 此注释还定义了资源的url在我们的示例中我们将付款服务公开为POST 可通过/ payment / pay访问。 RequestParam此注释表示特定的请求参数在我们的示例中我们将名为key的请求参数映射到String类型的参数键 。 RequestBody此批注表示请求的主体在我们的示例中我们将请求的主体映射到类型为PaymentRequest的POJO类jackson处理JSON / POJO转换 注意到响应以BaseResponse表示不需要注释 杰克逊将其隐式转换为JSON。 5.部署应用程序 以下是部署我们的应用程序的步骤 右键单击pom.xml- 运行方式- Maven安装 Maven在目标文件夹内生成一个名为SpringBootRest-0.0.1-SNAPSHOT.jar的jar文件 打开cmd然后使用以下命令运行jar java -jar SpringBootRest-0.0.1-SNAPSHOT.jar 到这里我们的应用程序启动并准备在默认端口8080上处理请求。 6.测试服务 为了测试我们的API我们使用来自chrome的Advanced REST客户端插件并发起2个不同的请求 成功的请求在此请求中我们将有效的共享密钥作为请求参数以及请求正文中的项目详细信息传递。 它是这样的 这是我们的回应 {status: success,code: 100
} 失败请求此请求看起来与上面相似但是共享密钥无效这是我们从API中获得的 {status: error,code: 102
} 就是这样希望您发现它有用。 翻译自: https://www.javacodegeeks.com/2018/03/build-rest-web-service-using-spring-boot.html