Herat University Library Management System Persian User Manual
Restful in Java
1.
2. دانشگاه بناب
RESTFUL
استاد راهنما: مهندس غلامعلی نژاد حاجعلی ایرانی
ارائه دهنده: سعید ستاری
3. مقدمه
REST معرفی
REST قوانین
REST مشخصات
بررسی یک سیستم واقعی
JAX-RS معرفی
JAX-RS مفاهیم
3 / 28 REST
فهرست
4. Representational State Transfer •
/ 28 REST
REST معرفی
4
Make Ant Maven
در سال 2000 Roy Fielding • معرفی شده توسط
Word Wide Web • یک مدل معماری برای سیستم های توزیع شده مانند
5. / 28 REST
REST قوانین
5
همه چیز به صورت منابع می باشند
Customer, Locations, Item, List of users : • مثال
منابع دارای معین کننده هویت می باشند
URIs for web : • مثال
واسط یکنواخت برای دسترسی به منابع
HTTP methods (GET, POST, PUT, DELETE, HEAD): • مثال
منابع دارای نماینده می باشند
XML, JSON, Binary : • مثال
می شوند Link منابع با یکدیگر
Hyperlinks: • مثال
1
2
3
4
5
6. / 28 REST
REST مشخصات
6
Cacheable Stateless
لایه بندی
ساده نیازی به
مکانیزم پی بری
اضافی ندارد
7. / 28 REST
بررسی یک سیستم واقعی
7
(Bug System Tracking) سیستم
خطاها پیگیری خطا
summary, priority, user who reported it
کاربران
User name
8. UML Notation:
Generalization /
inheritance
/ 28 REST
بررسی یک سیتم واقعی
8
UML Notation:
“whole-part” relationship (composition)
“part” is exclusively owned by “whole”
UML Notation:
One-way association
9. بررسی یک سیستم واقعی-منابع و مشخص کننده ها
همه چیز یک منبع می باش1د
Identifiers Note
http://<host>/users All users
http://<host>/users/{userId} A particular user
http://<host>/bugs All bugs
http://<host>/bugs/{bugId} A particular bug
http://<host>/bugs/{bugId}/notes All notes for a particular bug
http://<host>/bugs/{bugId}/notes/{not
eId}
A particular note for a particular bug
/ 28 REST
9
• منابع
User,Bug,Note •
All users, All bugs, All notes for a particular bug •
• مشخص کننده ها
مشخص کننده ها هستند 2
10. / 28 REST
واسط های یکنواخت
10
HTTP • متدهای
HTTP verb Meaning Safe? Idempotent? Cacheable?
POST Create*
GET Retrieve
PUT Update*
DELETE Delete
معانی دیگری هم دارند PUT و POST)*(
)PASTE AFTER( می تواند برای به روز رسانی جزی و یا اضافه کردن چیزی به منابع استفاده شود POST
PASTE ( آن را می شناسیم فرستاده شوند URI استفاده شود اگر تمام محتوی منابع تعیین شده که create می تواند به عنوان PUT
)OVER
11. بررسی یک سیستم واقعی-واسط یکنواخت
/ 28 REST
11
توضیحات عملیات
GET http://<host>/users ها user لیست تمام
POST http://<host>/users جدید user ساخت
GET http://<host>/users/ بخصوص 345 user بازیابی یک
PUT http://<host>/users/ بخصوص 345 user اصلاح یک
DELETE http://<host>/users/ بخصوص 345 user حذف یک
توضیحات عملیات
GET http://<host>/bugs/234/notes لیست تمام متن های خطای 234
POST http://<host>/bugs/234/notes ساخت یک متن جدید برای خطای 234
[GET | PUT | DELETE] .../bugs/234/notes/ [بازیابی] اصلاح [حذف ] یک متن خطای 34
234
واسط یکنواخت برای دسترس 3ی به منابع
12. بررسی یک سیستم واقعی-نمایش ها و منابع لینک شده
/ 28 REST
12
: XML • نمایش در
GET http://localhost:9000/bugs/1/notes/1
Content-type: application/xml
<Note href=“http://localhost:9000/bugs/1/notes/1 ">
<description>It is really
broken</description>
<owner>http://localhost:9000/users/1</owner>
</Note>
POST http://localhost:9000/bugs
Content-type: application/json
{
"Bug" : {
"priority" : "P1",
"reporter" : "http://localhost:9000/users/1",
"summary" : "Something is wrong"
}
}
منابع دارای نماینده می با4شند
: JSON • نمایش در
می 5 شوند Link منابع با یکدیگر
13. / 28 REST
JAX-RS معرفی
13
وب سرویس RESTFul جاوا برای API : JAX-RS
14. / 28 REST
JAX-RS مفاهیم کلیدی
14
• کلاس های منابع
یا متدهای @Path • کلاس های جاوایی که حداقل دارای یک متد با حاشیه نویسی
@GET , @PUT, @POST ی@ ا,ت Dح E هL خE رT چE •
• با توجه به قرارداد یک منبع جدید کلاس برای هر
درخواست ساخته می شود
دیگر پیاده سازی های چرخه حیات را محدود نمی JSR •
• متدهکاندی منابع
از یک کلاس منبع توسط متد درخواست نقش دهنده حاشیه نویسی Public • یک متد
(@GET, @PUT, @POST, @DELETE, @OPTIONS, @HEAD) می شود
• کلاس های مهیا
interface حاشیه نویسی می شوند و با یک یا چند @Provider • کناینن دکلا هس ها توسط
پیاده سازی می شوند JAX-RS
MessageBodyReader/MessageBodyWriter •
ExceptionMapper •
ContextResolver •
15. حاشیه نویسی های پرکاربرد / JAX-RS مفاهیم
/ 28 REST
15
شرح هدف حاشیه نویسی
@Path Class or Method منسوب به مسیر یک منبع
@Consumes
@Produces
Class or Method لیستی از نوع های واسط ها که توانایی تحلیل و تولید کند
@GET
@POST
@PUT
@DELETE
@OPTIONS
@HEAD
Method بکار برده شده توسط حاشیه نویسی متد HTTP افعال
@PathParam Parameter (also
field, POJO method)
استخراج شود URI ارزشی که می تواند توسط
16. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
پایه که متصل می URI
شود به منبع
17. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
برای متد HTTP متد
getUser()
18. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
قطعه / URI مسیر
پارامتر
19. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
GET …/users/{id}
20. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
مقدار و نوع را بر می
گرداند
21. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
را در URI ارزش قسمت
انتقال می دهد id پارامتر
22. @Path("/users")
public class UserHandler {
@GET
@Path("{id}")
@Produces("application/xml”)
public JaxbUser getUser(@PathParam("id") long id) {
/ 28 REST
JAX-RS مثالی از
16
...
}
GET http://localhost:9000/users/2
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<User> … </User>