💻
Bookstores
  • Tech Stacks
  • Django
    • Django REST framework
    • Serializer validation
    • Form validation in view class
  • Use Open API data model
  • Server Side react javascript
  • React context and redux difference
  • Migrate state management from Redux to Jotai
  • Migrate from REST to GraphQL
  • Migrate from REST to gRPC
  • How to handle cross origin?
Powered by GitBook
On this page

Was this helpful?

Migrate from REST to GraphQL

PreviousMigrate state management from Redux to JotaiNextMigrate from REST to gRPC

Last updated 4 years ago

Was this helpful?

Only the red text parts are different.

  • Repositories

    • REST :

    • GraphQL :

  • Backend differences

    • REST :

      • Implementation of

        book.apis.py

        book.serializers.py

      • Middleware cors : bypass the cross site origin.

      • Handle snake-case and camel-case inconsistency.

    • GraphQL :

      • Implementation of

        book.schema.py

      • Middleware cors : bypass the cross site origin and OPTIONS method.

  • Frontend differences The difference is only the database query service.

    • REST : Use URL end point. category.js

        const CategoryService = {
            list: () => {
                let url = "api/category/";
                return Request.get(url);
            }
        }

      request.js

        const Request = {
      
            get: async (url) => {
      
                try {
                    let result = await axios.get(
                        getFullURL(url),
                        getHeaderConfig()
                    );
                    return Promise.resolve(result.data);
                } catch (error) {
                    console.log(error);
                    return Promise.reject("get error");
                }
      
            }
        }
    • GraphQL : Always use POST method to submit query. category.js

        const CategoryService = {
            list: async () => {
                let query = `query {
                    categoryList {
                        id
                        name
                    }
                }
                `
                let data = await Request.get(query);
                return data.data.categoryList;
            }
        }

      request.js

        const Request = {
      
            get: async (query) => {
      
                try {
                    query = query.replace(/^\s+/gm, '');
                    let body = { query }
                    body = JSON.stringify(body);
                    let result = await axios.post(
                        getURL(),
                        body,
                        getHeaderConfig()
                    );
                    return Promise.resolve(result.data);
                } catch (error) {
                    console.log("error list", error);
                    return Promise.reject("get error");
                }
      
            }
        }
https://github.com/ccapeng/bookstore_api
https://github.com/ccapeng/bookstore_graphQL
restframework
graphene