java如何开发web api
使用Spring Boot开发Web API
Spring Boot是Java生态中开发Web API的高效框架,简化了配置和部署流程。以下为开发步骤:
环境准备
- JDK 1.8或更高版本
- Maven或Gradle构建工具
- IDE(如IntelliJ IDEA/Eclipse)
创建项目 通过Spring Initializr生成项目,选择依赖:
Spring Web(核心Web模块)Spring Data JPA(如需数据库交互)
项目结构示例
src/main/java
└── com.example.demo
├── DemoApplication.java // 启动类
├── controller // 控制器层
├── model // 数据模型
└── repository // 数据访问层
编写基础API
定义控制器
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Web API!";
}
}
启动应用
运行DemoApplication.java中的main方法,默认访问地址:
http://localhost:8080/api/hello
处理HTTP请求
接收参数
@GetMapping("/greet")
public String greetUser(@RequestParam String name) {
return "Hello, " + name;
}
路径变量
@GetMapping("/users/{id}")
public ResponseEntity<String> getUser(@PathVariable Long id) {
return ResponseEntity.ok("User ID: " + id);
}
数据库集成
定义实体类
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// getters/setters
}
创建Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
实现CRUD操作
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
@GetMapping
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
异常处理
自定义异常
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}
全局异常处理器
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> handleNotFound(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
}
安全配置
添加Spring Security依赖后:
基础安全配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/api/public/").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
测试API
使用Postman或编写单元测试:
测试示例
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testGetUser() throws Exception {
mockMvc.perform(get("/api/users/1"))
.andExpect(status().isOk());
}
}
部署选项
- 打包为JAR:
mvn clean package,生成可执行JAR - 部署到Tomcat:打包为WAR并放入webapps目录
- 容器化:创建Dockerfile并构建镜像
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]






