DEV Community

loading...
Cover image for Build Web APIs with Aqueduct #3 (video series)

Build Web APIs with Aqueduct #3 (video series)

graphicbeacon profile image Jermaine Oppong Originally published at creativebracket.com ・2 min read

In this article we will look at Serializable classes and how they enable us to handle the payload of a request body. We will then proceed to set up and integrate our PostgreSQL database.

Here's the third video in the series:


Watch on YouTube


What are Serializable objects?

These objects are responsible for encoding and decoding the payload of a request. To use one of these, extend the Serializable class and override the asMap() and readFromMap() methods.

class Read extends Serializable {
  String title;
  String author;
  int year;

  @override
  Map<String, dynamic> asMap() => {
    'title': title,
    'author': author,
    'year': year,
  }

  @override
  void readFromMap(Map<String, dynamic> requestBody) {
    title = requestBody['title'] as String;
    author = requestBody['author'] as String;
    year = requestBody['year'] as int;
  }
}
Enter fullscreen mode Exit fullscreen mode

So the asMap() method takes in the instance members of Read and returns a Map structure, useful when returning JSON responses.

readFromMap() is used when extracting the request payload keys into our instance properties. This allows us to therefore bind our instance to the body payload parameter that comes in our POST request method:

class ReadsController extends ResourceController {
  ...
  ...
  @Operation.post()
  Future<Response> createNewRead(@Bind.body() Read body) async {
    // Notice the `body` parameter cast to the `Read` Serializable subclass
    ...
  }
  ...
  ...
}
Enter fullscreen mode Exit fullscreen mode

See how this works in more detail and how we integrate a fully functional PostgreSQL database in the full video.

Get the source code


Subscribe to my YouTube channel for more videos covering various aspects of full-stack web development with Dart.

Like, share and follow me 😍 for more content on Dart.

Further reading

  1. Handling HTTP Requests: Serializable Objects
  2. Aqueduct Docs: Reading from a Database
  3. Free Dart screencasts on Egghead.io

Discussion (0)

pic
Editor guide