# Thiết kế API REST (Go) > Nguyên tắc REST, versioning, phân trang, lọc, HATEOAS, mã trạng thái, OpenAPI/Swagger - 20 câu hỏi phỏng vấn - Mid-Level - [Câu hỏi phỏng vấn: Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van.md) ## 1. Nguyên tắc cơ bản của REST là gì? **Câu trả lời** REST dựa trên nguyên tắc biểu diễn các tài nguyên có thể truy cập thông qua các URI duy nhất. Mỗi tài nguyên (user, product, order) có một URI và có thể được thao tác thông qua các động từ HTTP chuẩn (GET, POST, PUT, DELETE). Mô hình hướng tài nguyên này cho phép một kiến trúc có khả năng mở rộng và tách rời, nơi máy chủ không lưu trữ trạng thái phiên của client. ## 2. Nên dùng phương thức HTTP nào cho thao tác cập nhật toàn bộ tài nguyên có tính idempotent? **Câu trả lời** PUT có tính idempotent và thay thế hoàn toàn tài nguyên. Gọi PUT nhiều lần với cùng dữ liệu tạo ra kết quả giống như một lần gọi duy nhất. Ngược lại, POST không idempotent (sẽ tạo nhiều tài nguyên), PATCH thực hiện cập nhật một phần, và DELETE xóa tài nguyên. Tính idempotent của PUT đảm bảo an toàn khi retry trong trường hợp lỗi mạng. ## 3. Nên trả về mã HTTP nào sau khi tạo thành công một tài nguyên mới? **Câu trả lời** Mã 201 Created cho biết một tài nguyên đã được tạo thành công. Nó đi kèm một header Location trỏ tới URI của tài nguyên mới. Mã 200 OK quá chung chung cho việc tạo, 204 No Content được dùng khi không có body phản hồi, và 202 Accepted báo hiệu việc xử lý bất đồng bộ chưa hoàn tất. ## Còn 17 câu hỏi nữa - Sự khác biệt chính nào phân biệt API REST với API RPC? - Nguyên tắc statelessness trong REST có nghĩa là gì? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Go khác - [Kiến thức cơ bản về Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-basics.md): 25 câu hỏi, Junior - [Cấu trúc dữ liệu Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-data-structures.md): 20 câu hỏi, Junior - [Interface trong Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-interfaces.md): 18 câu hỏi, Junior - [Xử lý lỗi](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/error-handling.md): 20 câu hỏi, Junior - [Cơ bản về Goroutine](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/goroutines-basics.md): 20 câu hỏi, Junior - [Channels](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/channels.md): 22 câu hỏi, Junior - [Go Modules](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-modules.md): 18 câu hỏi, Mid-Level - [Máy chủ HTTP](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-server.md): 24 câu hỏi, Mid-Level - [HTTP Client](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-client.md): 18 câu hỏi, Mid-Level - [Mã hóa JSON](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/json-encoding.md): 20 câu hỏi, Mid-Level - [Database/SQL](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/database-sql.md): 22 câu hỏi, Mid-Level - [Gói context](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/context-package.md): 20 câu hỏi, Mid-Level - [Testing](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/testing.md): 22 câu hỏi, Mid-Level - [Các mẫu Concurrency](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/concurrency-patterns.md): 24 câu hỏi, Mid-Level - [Primitive đồng bộ hóa](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/sync-primitives.md): 22 câu hỏi, Mid-Level - [Framework web Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-web-frameworks.md): 20 câu hỏi, Mid-Level - [gRPC](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/grpc.md): 22 câu hỏi, Mid-Level - [Reflection](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/reflection.md): 20 câu hỏi, Senior - [Quản lý bộ nhớ](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/memory-management.md): 24 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Generics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/generics.md): 20 câu hỏi, Senior - [Go Design Patterns](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/design-patterns.md): 24 câu hỏi, Senior - [Microservices](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/microservices.md): 24 câu hỏi, Senior - [Bảo mật và Xác thực](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/security-authentication.md): 24 câu hỏi, Senior - [Docker & Containerization](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/docker-containerization.md): 20 câu hỏi, Senior - [Kubernetes Basics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/kubernetes-basics.md): 22 câu hỏi, Senior - [Go Nâng cao](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/advanced-go.md): 20 câu hỏi, Senior - [Phát triển CLI](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/cli-development.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/rest-api-design