Skip to content

RESTful Web API ​

RESTful Web API (Application Programming Interface) āļ„āļ·āļ­āļĢāļđāļ›āđāļšāļšāļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡Â API āļ—āļĩāđˆāđƒāļŠāđ‰āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄÂ REST (Representational State Transfer) āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđƒāļ™āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ āļ‹āļķāđˆāļ‡ RESTful Web API āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļš Backend āļ­āļĒāđˆāļēāļ‡āļĄāļēāļ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ Backend āļ„āļ·āļ­āļŠāđˆāļ§āļ™āļ—āļĩāđˆāļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ—āļĩāđˆāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ•āđˆāļēāļ‡āđ† āđ‚āļ”āļĒ RESTful Web API āđ€āļ›āđ‡āļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāđƒāļŠāđ‰āļāļąāļ™āļ­āļĒāđˆāļēāļ‡āđāļžāļĢāđˆāļŦāļĨāļēāļĒāđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāđāļĨāļ°āļžāļąāļ’āļ™āļē Backend āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļšāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒ (Client) āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ‚āļ”āļĒāļĄāļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļ™āļ”āļąāļ‡āļ™āļĩāđ‰:

āļĄāļĩāļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāļŠāļĢāļļāļ›āļ”āļĩāļĄāļēāļāđ†āđ†āđ†āļ­āļĒāļēāļāļĄāļēāđāļ™āļ°āļ™āļģāļ„āļĢāļąāļšāļœāļĄ

āļŦāļĨāļąāļāđ€āļāļ“āļ‘āđŒāđāļĨāļ°āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļš RESTful API

āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ RESTful Web API āđƒāļ™ Backend ​

  1. āļˆāļąāļ”āļāļēāļĢāļ—āļĢāļąāļžāļĒāļēāļāļĢ (Resources Management): Backend āļˆāļ°āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĢāļ·āļ­āļ—āļĩāđˆāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ·āđˆāļ™āđ† āđ‚āļ”āļĒ RESTful Web API āļˆāļ°āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļāļĨāļēāļ‡āđƒāļ™āļāļēāļĢāļĢāļąāļšāļ„āļģāļ‚āļ­āļˆāļēāļāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ—āļĢāļąāļžāļĒāļēāļāļĢāđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™ āđ€āļŠāđˆāļ™ āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļŦāļĄāđˆ āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļ‚āđ‰āļ­āļĄāļđāļĨ āļāļēāļĢāļĨāļšāļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ°āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļē
  2. āļāļēāļĢāļĢāļąāļšāđāļĨāļ°āļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ„āļģāļ‚āļ­ (Request and Response Handling): āđ€āļĄāļ·āđˆāļ­āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāļŠāđˆāļ‡āļ„āļģāļ‚āļ­ HTTP āļĄāļēāļĒāļąāļ‡ Backend āļœāđˆāļēāļ™ RESTful API, Backend āļˆāļ°āļ—āļģāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ„āļģāļ‚āļ­āļ™āļąāđ‰āļ™āđāļĨāļ°āļŠāđˆāļ‡āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡ (response) āļāļĨāļąāļšāđ„āļ›āļĒāļąāļ‡āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđƒāļ™āļĢāļđāļ›āđāļšāļš JSON āļŦāļĢāļ·āļ­ XML āđ‚āļ”āļĒāļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰
  3. Business Logic: Backend āļˆāļ°āļĢāļ§āļĄāļ•āļĢāļĢāļāļ°āļ˜āļļāļĢāļāļīāļˆāļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™ āļāļēāļĢāļ„āļģāļ™āļ§āļ“ āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļāļąāļšāļĢāļ°āļšāļšāļ āļēāļĒāļ™āļ­āļ āļŊāļĨāļŊ āđ„āļ§āđ‰āđƒāļ™ RESTful API āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļāļąāļšāļ—āļĢāļąāļžāļĒāļēāļāļĢāđ€āļ›āđ‡āļ™āđ„āļ›āļ•āļēāļĄāļāļŽāđ€āļāļ“āļ‘āđŒāđāļĨāļ°āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™
  4. āļāļēāļĢāļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ (Security): RESTful API āđƒāļ™ Backend āļˆāļ°āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ āđ€āļŠāđˆāļ™ āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™ (Authentication) āļāļēāļĢāļ­āļ™āļļāļāļēāļ• (Authorization) āļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļ‚āđ‰āļ­āļĄāļđāļĨ (Data Encryption) āđāļĨāļ°āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™ SQL Injection, XSS, CSRF āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™
  5. āļāļēāļĢāļŠāđ€āļāļĨāļĢāļ°āļšāļš (Scalability): Backend āļ—āļĩāđˆāđƒāļŠāđ‰ RESTful API āļŠāļēāļĄāļēāļĢāļ–āļ­āļ­āļāđāļšāļšāđƒāļŦāđ‰āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļŠāđ€āļāļĨāđāļ™āļ§āļ™āļ­āļ™ (Horizontal Scaling) āđ„āļ”āđ‰āļ‡āđˆāļēāļĒ āđ‚āļ”āļĒāļāļēāļĢāđ€āļžāļīāđˆāļĄāļˆāļģāļ™āļ§āļ™āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ—āļĩāđˆāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ API āļĄāļēāļāļ‚āļķāđ‰āļ™āđ€āļžāļ·āđˆāļ­āļĢāļ­āļ‡āļĢāļąāļšāļˆāļģāļ™āļ§āļ™āļ„āļģāļ‚āļ­āļ—āļĩāđˆāđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ RESTful Web API ​

āļŠāļĄāļĄāļ•āļīāļ§āđˆāļēāļ„āļļāļ“āļĄāļĩāļĢāļ°āļšāļšāļˆāļąāļ”āļāļēāļĢāļŦāļ™āļąāļ‡āļŠāļ·āļ­ (Book Management System) āđ‚āļ”āļĒāļĄāļĩ API āļ—āļĩāđˆāđƒāļŠāđ‰āļˆāļąāļ”āļāļēāļĢāļŦāļ™āļąāļ‡āļŠāļ·āļ­āļ”āļąāļ‡āļ™āļĩāđ‰:

  • GET /books: āļĢāļąāļšāļĢāļēāļĒāļāļēāļĢāļŦāļ™āļąāļ‡āļŠāļ·āļ­āļ—āļąāđ‰āļ‡āļŦāļĄāļ”
  • GET /books/{id}: āļĢāļąāļšāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŦāļ™āļąāļ‡āļŠāļ·āļ­āđ€āļ‰āļžāļēāļ°āđ‚āļ”āļĒ ID
  • POST /books: āđ€āļžāļīāđˆāļĄāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđƒāļŦāļĄāđˆ
  • PUT /books/{id}: āļ­āļąāļ›āđ€āļ”āļ•āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđ€āļ‰āļžāļēāļ°āđ‚āļ”āļĒ ID
  • DELETE /books/{id}: āļĨāļšāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđ€āļ‰āļžāļēāļ°āđ‚āļ”āļĒ ID

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ API: ​

  • āļāļēāļĢāļ‚āļ­āļĢāļēāļĒāļāļēāļĢāļŦāļ™āļąāļ‡āļŠāļ·āļ­āļ—āļąāđ‰āļ‡āļŦāļĄāļ”: GET /books
  • āļāļēāļĢāļ‚āļ­āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŦāļ™āļąāļ‡āļŠāļ·āļ­ ID 1: GET /books/1
  • āļāļēāļĢāđ€āļžāļīāđˆāļĄāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđƒāļŦāļĄāđˆ: POST /books āļžāļĢāđ‰āļ­āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđƒāļ™āļšāļ­āļ”āļĩāđ‰āļ‚āļ­āļ‡āļ„āļģāļ‚āļ­
  • āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļŦāļ™āļąāļ‡āļŠāļ·āļ­ ID 1: PUT /books/1 āļžāļĢāđ‰āļ­āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āđƒāļ™āļšāļ­āļ”āļĩāđ‰āļ‚āļ­āļ‡āļ„āļģāļ‚āļ­
  • āļāļēāļĢāļĨāļšāļŦāļ™āļąāļ‡āļŠāļ·āļ­ ID 1: DELETE /books/1