簡體   English   中英

構建Rest服務器

[英]Building a Rest Server

我已經學會了如何發送和處理Rest API請求,因此我非常熟悉外部用戶如何通過打開API連接,設置請求方法和處理返回消息等方法向API提交請求。
然而,現在是創建我自己的Rest Web服務的時候了,我有點卡住了,因為我並不完全熟悉服務器如何處理通信。
我可以建立一個很好的連接以便進行通信,但我對連接的細節並不是特別熟悉。
下面是我初始化服務器的方法,然后等待連接並進行簡短的對話,直到客戶端斷開連接。

    public void Initialise(){
        try {
            ServerSocket s = new ServerSocket(21); //TODO: Change port?
            while(true){
                Socket incoming = s.accept();
                Runnable r = new ConnectionManager(incoming);
                Thread t = new Thread(r);
                t.start();
            }
        }
        catch(IOException e){
        e.printStackTrace();
        }
}

以及處理連接的類。

public class ConnectionManager implements Runnable{
private Socket incoming;

public ConnectionManager(Socket i){
    this.incoming = i;
}

@Override
public void run() {
    try{
        try{
            //Initialise IOStreams
            InputStream inStream = incoming.getInputStream();
            OutputStream outStream = incoming.getOutputStream();

            Scanner in = new Scanner(inStream);
            PrintWriter out = new PrintWriter(outStream, true);

            out.println("TODO: Change this message. Press Q to quit.");

            boolean done = false; 
            while (!done && in.hasNextLine()){
                String line = in.nextLine();
                out.println("Echo: " +line);
                if (line.trim().equals("Q")){
                    done = true;
                }
            }
        }
        finally{
            incoming.close();
        }
    }
    catch (IOException e){
        e.printStackTrace();
    }
}

}

我不知道該怎么做,是我如何開始構建一個監聽Rest請求的應用程序,然后相應地處理它們。 我確信在檢查連接后,我將能夠設計處理API請求的功能,但是我不知道如何查看用戶發送的Rest請求的細節。
例如,如果用戶要發送請求,例如

GET exampleAPI/endpoint?params  

如何檢查請求,然后相應地處理它?
例如,在客戶端啟動請求時,使用HttpURLConnection等方法可以讓您遵循以下過程:

HttpURLConnection c = (HttpURLConnection) targetURL.openConnection();
c.setRequestMethod("GET");

這將允許您向目標URI提交Get請求。
查看Socket的Java文檔,我不太清楚如何查看傳入請求和活動連接。
我錯過了什么,或者只是完全錯了?

正如我在評論中提到的,你可以使用Jersey / Spring / etc ..而不是你重寫整個服務器的邏輯和處理多個線程等。

此外,您應該知道有一個名為JAX-RSJDK API (規范和實現)。 你可以看看這里

你可以在這里查看Spring REST Controller這里的Jersey。

我建議你首先通過JDK JAX-RS API ,然后你可以看看Spring and Jersey

還有其他供應商實現您可能感興趣的JAX-RS ,您可以在這里查看JAX-RS實現的比較。

PS:您還應該知道Spring不符合JAX-RS API ,而是擁有自己的API

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM