企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 如何使用 Spring 创建 RESTful Web 服务 > 原文: [https://javatutorial.net/how-to-create-restful-web-services-with-spring](https://javatutorial.net/how-to-create-restful-web-services-with-spring) 在处理 RESTful Web 服务时,我们需要使用`@RestController`注释,该注释基本上表示`@Controller`和`@ResponseBody`注释。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 当我们在方法中使用`@RequestMapping`时,我们可以添加一个名为产生的属性,该属性指定发送给用户的输出将为 JSON 格式。 ### 示例 **Employee.java** ```java public class Employee { private int id; private String firstName; private String lastName; public Employee(int id, String firstName, String lastName) { this.id = id; this.firstName = firstName; this.lastName = lastName; } public setFirstName(String fName) { firstName = fName; } public setLastName(String lName) { lastName = lName; } public int getId() { return id; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } ``` `EmployeeController.java` 控制器类将可用于处理 HTTP 请求,这是我们构建 RESTful Web 服务时的约定。 ```java import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class EmployeeController { @RequestMapping("/employee") public Employee createEmployee(@RequestParam(value="id") int employeeId, @RequestParam(value="firstName") String fName, @RequestParam(value="lastName") String lName) { // return the new Employee object with that id, first name and last name return new Employee(employeeId, fName, lName); } } ``` 让我们分解`Controller`类。 乍一看,它看起来很简单,但是在幕后发生了很多事情。 让我确切解释一下。 感谢`@RequestMapping`,我们将路径`/employee`映射到我们的`getEmployeeId`方法,如果您不熟悉`@RequestMapping`注释,则当我们不指定方法请求时,默认情况下它将通过。 如果我们只想将它作为 GET 方法使用(在我们的示例中最好),则可以将上面的代码更改为以下代码: ```java import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class EmployeeController { @RequestMapping("/employee", method=RequestMethod.GET) public Employee createEmployee(@RequestParam(value="id") int employeeId, @RequestParam(value="firstName") String fName, @RequestParam(value="lastName") String lName) { // return the new Employee object with that id, first name and last name  return new Employee(employeeId, fName, lName); } } ``` 因此现在我们将`@RequestMapping`注解更改为`@RequestMapping("/employee", method=RequestMethod.GET)`。正如我在本教程开始时所说的,我们还指定了我们希望结果为 JSON 格式。 因此我们可以将`@RequestMapping("/employee", method=RequestMethod.GET)`更改为`@RequestMapping("/employee", method=RequestMethod.GET, Produces="application/json")`。 我们将查询参数`id`提取到`employeeId`,将`firstName`提取到`fName`,将`lastName`提取到`lName`,然后实例化一个**新的**`Employee`对象并首先传递该 ID。 我们作为查询参数得到的名字和姓氏。 要检索这些参数并使用此方法创建`Employee`对象,URL 如下所示: ``` http://localhost:8080/employee?id=x&firstName=xx&lastName=xxx ``` 再一次,感谢`@RequestParam`,我们得到了`x`,并将它们存储在方法参数中。 ### 运行应用程序 要运行该应用程序,我们将使用`main()`方法,该方法如下所示: ```java 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); } } ``` `SpringApplication.run()`启动应用程序并执行您的所有操作。 这是最简单的方法,但是,如果愿意,可以将其设置为可执行的 JAR,也可以使用 Gradle 或 Maven 从命令行运行它。 你的选择。 ### 响应 JSON 格式的响应主体如下所示: ```java { "id":x, firstName="xx", lastName="xxx" } ```