我已经学会了如何发送和处理Rest API请求,所以我相当满意外部用户如何通过诸如打开API连接,设置请求方法等方法向API提交请求并处理返回的消息。
但是,现在是创建我自己的Rest Web Service的时候了,而且我有点卡住了,因为我不完全熟悉服务器如何处理通信。
我可以建立一个很好的连接来允许通信,但我并不特别满意连接的细节。
下面是我初始化服务器的方法,服务器然后将等待,直到连接并进行简短对话,直到客户端断开连接。构建一个Rest服务器
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");
的过程,这将允许你提交一个GET请求到目标URI。
翻阅关于Socket的Java文档,我不太清楚我如何查看传入请求和活动连接。
我错过了什么,或者只是把事情搞错了?
为什么不能使用JAX-WS或Jersy?有限制吗? – developer
不是一个答案,但我会建议使用这个框架。它们为您正在尝试手写的所有内容提供功能。 – UnholySheep
@javaguy没有限制,我只是缺乏构建Rest服务器的经验,所以我不确定最佳实践和设置。 – Potatosaurus