카테고리 없음

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"
}