Web Services
- Services that are exposed to the Internet for programmatic access.
- Two main types of web services
- REST (Representational State Transfer)
- REST has no standard protocol (can use XML,JSON,etc)
- SOAP
- Web services use HTTP (Hyper Text Transfer Protocol) to send and receive messages.
- To include service definitions that offered from Web Service: WSDL
URI
- Two main types of URI
- Resource Based URI
- Every resource must be identified by a single URI
- Doesn't contain .do in URI ( /message/{message_Id})
- Collection URI
- return collection of instances
- ex : /message/1/comments -> return all the comments relevant to message id=1
- To create new resource you have to use collection URI
Filtering
- /messages?offset=30&limit=10 -> return 10 messages starting from message_Id=30
HTTP Methods
- Four main types of HTTP methods:
- Get: To get the details of resource
- Put: To update resources
- Post: To create new resource
- Delete: To delete the resource
- Other HTTP methods: head, options
- HTTP methods can be in two types
- Idempotent: safely repeatable (put, get, delete)
- Non-idempotent: can not safely repeatable (post)
Status Codes
- Five main types of status code that indicate by first number of three digits
- 1xx: Informational codes (acknowledgement/response)
- 2xx: Success codes
- 3xx: Redirection codes (ask clients do something)
- 4xx: Client Error Codes
- 5xx: Server errors
Hypermedia As The Engine Of Application State(HATEOAS)
- Use to provide links to resources
- rel: Describe the relationship to a current resource (What that link point to)
API Levels
- Three main types of API levels
- Level1: Use resource based URI
- Level2: Use HTTP methods
- Level3: Use HATEOAS
Additional Information
- Hypertext: Text that contains links to other texts (hyperlinks)
- Static web pages : Every resource has URI and specific HTML file
- Jersey: Library that handles all the API functionalities in the deploying server (ex: tomcat)
- Maven: Project management utility
- Archetype: template (previously created projects)
- Group id: Package id
- Artifact Id: project name
Implementing Messenger App Using Jax-RS
- Create Maven project
- select archetype as Jersey-webapp
- Crete tomcat server
- Create resources
- @Path(/messages): To choose class
- @GET: Tell the relevant HTTP method
- @produces(MediaType.TEXT_PLAIN): Tell the return type
- @XmlRootElement: convert types to XML type
- Create database class using hashmap
- Include a variable in a path parameter
- @Path("/{message_id}") : use curly braces
- get this one as a variable to the method: use @PathParam
- To get JSON type: uncomment dependencies in pom.xml file
- For post requests
- @consumes(MediaType.TEXT_PLAIN) : Tell the posting data type
- Send Parameters
- @QueryParam("year") : /messages?year=2015
- Query param use?
- @MatrixParam("year"): /message;year=2015
- Matrix param use;
- @HeaderParam("year")
- To get header values by their name
- @CookieParam("year")
- To get cookie values
- @Context UriInfo uriinfo: To get all the information if you are not sure about values
- To get all the necessary parameters (path, URL, query, cookies etc)
- @BeanParam : @BeanParam BeanParam(class name) beanparam
- Save other parameters in a class and access them using getters and setters
- @XmlTransient: ignore the below data when you expose other data
- To change headers: use Response.created()
- To create URI : use uriinfo.getAbsolutePathBuilder()
- To handle the exception: use WebApplicationException
GitHub repository: https://github.com/kaosadi17/Messenger
Comments
Post a Comment