Exposing data operations over HTTP
Now that we have built all of our entities and the data access methods that operate on them, it's time to wire them up to an HTTP API. This will feel more familiar as we have already done this kind of thing a few times in the book.
Optional features with type assertions
When you use interface types in Go, you can perform type assertions to see whether the objects implement other interfaces, and since you can write interfaces inline, it is possible to very easily find out whether an object implements a specific function.
If v
is interface{}
, we can see whether it has the OK
method using this pattern:
if obj, ok := v.(interface{ OK() error }); ok { // v has OK() method } else { // v does not have OK() method }
If the v
object implements the method described in the interface, ok
will be true
and obj
will be an object on which the OK method can be called. Otherwise, ok
will be false.
Note
One problem with this approach is that it hides the secret functionality...