카테고리 없음
JAVA RESTful API [FINAL]
로그앤
2023. 6. 21. 17:05
1. Define API Endpoints
// BankAccountController.java
@RestController
@RequestMapping("/accounts")
public class BankAccountController {
@Autowired
private BankAccountService bankAccountService;
@GetMapping
public List<BankAccount> getAllAccounts() {
return bankAccountService.getAllAccounts();
}
@GetMapping("/{accountID}")
public BankAccount getAccountById(@PathVariable String accountID) {
return bankAccountService.getAccountById(accountID);
}
@PostMapping
public BankAccount createAccount(@RequestBody BankAccount account) {
return bankAccountService.createAccount(account);
}
@PutMapping("/{accountID}")
public BankAccount updateAccount(@PathVariable String accountID, @RequestBody BankAccount account) {
return bankAccountService.updateAccount(accountID, account);
}
@DeleteMapping("/{accountID}")
public void deleteAccount(@PathVariable String accountID) {
bankAccountService.deleteAccount(accountID);
}
}
// TransactionController.java
@RestController
@RequestMapping("/transactions")
public class TransactionController {
@Autowired
private TransactionService transactionService;
@GetMapping
public List<Transaction> getAllTransactions() {
return transactionService.getAllTransactions();
}
@GetMapping("/{transactionID}")
public Transaction getTransactionById(@PathVariable String transactionID) {
return transactionService.getTransactionById(transactionID);
}
@PostMapping
public Transaction createTransaction(@RequestBody Transaction transaction) {
return transactionService.createTransaction(transaction);
}
@PutMapping("/{transactionID}")
public Transaction updateTransaction(@PathVariable String transactionID, @RequestBody Transaction transaction) {
return transactionService.updateTransaction(transactionID, transaction);
}
@DeleteMapping("/{transactionID}")
public void deleteTransaction(@PathVariable String transactionID) {
transactionService.deleteTransaction(transactionID);
}
}
2. Define HTTP Methods
To consume the API request and response in Java, you can use libraries such as `HttpClient` or `RestTemplate`.
Here's an example using `HttpClient` to make an HTTP POST request and consume the API response:
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.util.Map;
public class APIClient {
public static void main(String[] args) throws IOException, InterruptedException {
// Create an instance of HttpClient
HttpClient httpClient = HttpClient.newHttpClient();
// Define the API endpoint URL
String url = "http://localhost:8080/users";
// Create the request body
String requestBody = "{\"name\": \"Jane Smith\", \"email\": \"jane.smith@example.com\", \"address\": \"456 Avenue, Town\", \"phone\": \"987-654-3210\"}";
// Create an HttpRequest with the endpoint URL and request method
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
// Send the request and retrieve the response
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
// Print the response status code
int statusCode = response.statusCode();
System.out.println("Response Status Code: " + statusCode);
// Print the response body
String responseBody = response.body();
System.out.println("Response Body: " + responseBody);
// Print the response headers
HttpHeaders headers = response.headers();
System.out.println("Response Headers:");
for (Map.Entry<String, java.util.List<String>> entry : headers.map().entrySet()) {
String headerName = entry.getKey();
java.util.List<String> headerValues = entry.getValue();
System.out.println(headerName + ": " + headerValues);
}
}
}
3. Implement API endpoints in server-side
4. Consume API Using Sample Response/Request Data
Sample Request
Endpoint: GET /users/{userID}
GET /users/123456789Endpoint: GET /users/{userID}
Sample Response
{
"id": "123456789",
"name": "John Doe",
"email": "john.doe@example.com",
"address": "123 Street, City",
"phone": "123-456-7890"
}