บทนำ (Overview)
จากบทความก่อนหน้าได้นำเสนอวิธีการส่ง “Parameter” ผ่าน “URL” โดยใช้ “Get Method” หรือที่เรียกว่า “PathParam” (How to create RESTful Web service with Netbeans – Multiple PathParam) บทความนี้นำเสนอวิธีการส่งข้อมูลโดยใช้ “Post Method” ซึ่งจะไม่ส่งผ่าน URL แล้วแต่จะส่งผ่านส่วน “Body” ของ “HTTP request message” แทน
ขั้นตอน (Steps)
- ก่อนอื่นจะต้องการเพิ่ม “javax.ws.rs.POST” และ “javax.ws.rs.FormParam” เสียก่อน
import javax.ws.rs.POST; import javax.ws.rs.FormParam;
- และเปลี่ยน “Get” เป็น “Post” ก่อนเรียกใช้ “Function”
@POST
- จากนั้นเรียกใช้ “@FormParam(“user”)” แทน “@PathParam(“user”)” ดังนี้
@POST public String checkLogin(@FormParam("user") String tmpUser, @FormParam("pass") String tmpPass) { return "Username: " + tmpUser + "..." + "Password: " + tmpPass ; }
- จาก “Source-code” ในบทความที่แล้วสามารถเพิ่มเติมได้ดังต่อไปนี้
package helloworld; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.FormParam; @Path("Login") public class LoginResource { @POST public String checkLogin(@FormParam("user") String tmpUser, @FormParam("pass") String tmpPass) { return "Username: " + tmpUser + "..." + "Password: " + tmpPass ; } @GET @Path("/Forgot") public String forgotPassword() { return "E-mail sent already"; } }
- ลอง “Run” และส่ง “Parameter” แบบ “Get” และค่าแบบเก่าได้ผลดังนี้
- ที่นี้ลองทดสอบส่งคำสั่งโดยใช้วิธี “Post” ผ่านโปรแกรม “Burp” ดังนี้
POST /Server/resources/Login/ HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 29 user=user-test&pass=pass-test
- ได้ผลลัพท์ดังรูป (สามารถศึกษาวิธีการใช้ Burp ได้ที่บทความ How to set burp to intercept HTTP messages)