Skip to main content

REST, API, RESTFUL API

REST, API, REST API (separation of concern)

# REST 

- (Representational State Transfer) is a software architecture style that defines a set of constraints to be used for creating web services.
REST Technology is generally preferred to the more robust SOAP (Simple Object Access Protocol) technology because REST leverages less bandwidth, making it more suitable for internet usage.
REST is:
  • Architecture (engineering)
  • Protocol(HTTP) 
  • Stateless protocol (eg: http protocol)
#Rest Architecture design principal:
1. Client Server Architecture (express js api -> Restful api)
2. Http protocol and method
3. Http verbs (method used for data interchange->get, post, put, delete)
2. Stateless
3. JSON data interchange (from data -> json, error, response, json)
4. Communication (same protocol)

#REST Architecture
- Data needs to fetch in Get request.
- Data needs to insert in Post request.
- Data needs to update in Put request.
- Data needs to delete in Delete request.
Example:
router.delete('/:id', function (res, res, next){
      //rest architecture
}) //delete request

Wrong practice:
router.get('/delete:/id', function (res, res, next){
    //no rest architecture
}

# API

- API stands for Application Program Interface, which can be defined as a set of methods of communication between various software components.
- 2 program communication (eg. postman and server)
- db modelling, middleware, validation, routing end point (/auth, /login), data interchange (req <->res), no rendering, (get, post, put, delete)

#REST API

- REST API is an interface or communication protocol between a client and server intended to simplify the building of client-side software.
- Web Services that conform to the REST architectural style, called RESTful web services, provide interoperability between computer systems on the internet.
- RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST, DELETE data.
- Protocol (set of rules) eg: SMT(email send), FTP(file transfer), UDP
- SMTP and HTTP can not have communication because to communicate, protocol needs to be matched.
- No using framework application. Its not application, its restful API. Building API with express js (remove render code, templating engine). API works as communicating middleware.
- RESTFUL API  is not framework. It gives data. Eg: Rest API (store person). Of someone gives, he will take and if someone asks, he will give.
Store room outside and inside communication (Angular --(API)-> Postman)

# Stateful vs Stateless 
Stateful:
- In stateful protocol, state info is kept even after a transaction has been processed.
- FTP (stateful protocol) requiring a lot of interaction, the underlying protocol should be stateful ones. (eg. Filezilla) login is needed, connection-oriented.
Stateless
- In the stateless protocol, no info about the transaction is maintained after a transaction is procced. 
- There is no record of state is saved at server end.
- Independent request.

# Component-Based Architecture (Separation of concern) for Rest API.
- Modularized (separate modules and how they communicate - separation of concern.)
MVC
Model define DB schema (db modeling)
Controller- business logic (condition check main file -> middleware)
Query - DB queries for schema (no middleware function)
Routes- routing handles

# Model-Based Architecture
- Model -> (communication) -> Query file
- Query file -> (communication) -> Controller
- Controller -> (communication) -> Routes

#Reverse engineering and straight engineering

Comments

Popular posts from this blog

Deploy react app on digitalocean using nginx

Source:  https://www.learnwithjason.dev/blog/deploy-nodejs-ssl-digitalocean/ Source:  https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04 Source:  https://www.youtube.com/watch?v=vRrhQwNixlc https://www.youtube.com/watch?v=pyxXCwgWdMw https://dev.to/xarala221/the-easiest-way-to-deploy-a-react-web-application-2l8a 1. Create a new droplet on DigitalOcean. Choose the $5/month option with Ubuntu 16.04.1 x64. Select a region closest to your users. 2. Finally, add your SSH key and ls -la ~/.ssh # This copies the key so you can paste with command + V pbcopy < ~/.ssh/id_rsa.pub # This prints it in the command line for manual copying cat ~/.ssh/id_rsa.pub   3.  Add your SSH key to the droplet Click “Add SSH Key” to save it, then make sure it’s selected, name your droplet, and hit the big “Create” button to get your server online. Your n...

Github Tutorial

GitHub brings together the world's largest community of developers to discover, share, and build better software. Delivered through software as a service(SAAS) business model 2008 by linus (Owner: Microsoft)  #Create New Repository in Github New Repository Add Repository Name and description Public / Private, initialize this repo with Read Me Create repository create a new repository on the command line echo "#test" >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/sinuna/test.git git push -u origin master …or push an existing repository from the command line git remote add origin https://github.com/sinuna/firstRepository.git git push -u origin master …or import code from another repository You can initialize this repository with code from a Subversion, Mercurial, or TFS project. Initialize Repo $ git init Clone Repo $ git clone https://github.com...

Wordpress React Theme Development

1) Download wordpress file from https://wordpress.org/download/ 2) Open xampp, wamp or openserver. I will show with xampp server. Also Xampp server recommended too. 3) Add wordpress folder to htdocs folder (for xampp) 4) cd xampp\htdocs\wordpress\wp-content\themes 5) npx create-react-wptheme react_theme 6) cd react_theme/react-src 7) yarn start 8) go to wp-admin dashboard change worpdress theme to react_theme 9) again yarn start 10) yarn build App.js http://localhost/wordpress_react/?rest_route=/wp/v2/posts import React , { Component } from 'react' ; class App extends Component { constructor ( props ){ super ( props ); this . state = { data : [] } } componentDidMount () { return fetch ( `http://localhost/wordpress_react/?rest_route=/wp/v2/posts` ) . then (( response ) => response . json ()) . then (( responseJson ) => { this . setState ({ data : ...