benoitdm-oslandia / pg_featureserv

Apache License 2.0
1 stars 0 forks source link

Task - Manage the format requested by the client #67

Closed benoitdm-oslandia closed 1 year ago

benoitdm-oslandia commented 1 year ago

In GitLab by @nrevelant on Oct 13, 2022, 16:43

Currently, pgfeatureserve seems to let the client choose the responses format on GET requests. :

    // Use Accept header if present
    hdrAccept := r.Header.Get("Accept")
    //fmt.Println("Accept:" + hdrAccept)
    if strings.Contains(hdrAccept, ContentTypeSchemaJSON) {
        return FormatSchemaJSON
    }
    if strings.Contains(hdrAccept, ContentTypeHTML) {
        return FormatHTML
    }
    return FormatJSON

However this parameter seems to have a limited support with mostly JSON formatted response ( handleItem() function inside handler.go ) :

        switch format {
        case api.FormatJSON:
            return writeItemJSON(ctx, w, name, fid, param, urlBase, crs)
        case api.FormatHTML:
            return writeItemHTML(w, tbl, name, fid, query, urlBase)
        default:
            return nil
        }

The TestWeakEtagFromDifferentRepresentationsDb test for example will cover this use case.

NB: In the case of an unsupported format, the return code should be : 406 Not Acceptable

benoitdm-oslandia commented 1 year ago
  1. Dans le cas de la réponse du handleItem on a bien du HTML :

    case api.FormatHTML:
            return writeItemHTML(w, tbl, name, fid, query, urlBase)
  2. Pour le coup il faut prendre une décision pour l'affichage ou non de l'eTag dans la cas d'un retour HTML. Personnellement je pense que c'est une information utile au traitement de la donnée mais pas trop utile à l'affichage. Pour le coup, il ne serait pas nécessaire de modifier la sortie HTML pour prendre en compte l'eTag.

  3. Concernant :

    Dans le cas où le serveur ne peut fournir le format demandé par le client, le code de retour HTTP serait 406 Not Acceptable

    Je pense qu'il va falloir se pencher un peu plus sur la gestion des codes d'erreurs car ce ne sont pas toujours les bons qui sont utilisés ==> @jmkerloch

benoitdm-oslandia commented 1 year ago

marked this issue as related to #85

benoitdm-oslandia commented 1 year ago

In GitLab by @nrevelant on Nov 7, 2022, 14:31

marked this issue as related to #87