Golang - Как создать уведомление об обратном вызове - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь реализовать случай, когда клиент отправляет POST-запрос на подписку на какую-либо службу серверу.

Сервер должен ответить данными подписки, однако через некоторое время, если естьЧтобы изменить информацию о подписке на сервере, сервер должен отправить клиенту уведомление об изменениях, используя «nfStatusNotificationUri» в теле запроса («nfStatusNotificationUri» в данных JSON ниже).

Я делаюне знаю как это сделать.

Я реализовал часть подписки POST, но не знаю, как реализовать часть уведомлений.

Может кто-нибудь помочь мне или дать некоторые рекомендации по enter code here, как это сделать.

Это то, что я сделал до сих пор:

// сервер // функции

func (m *NfInstanceDataAccess) Insertsub(nfinstancesub Subscriptions) error {
    err := db.C(COLLECTION).Insert(&nfinstancesub)
    return err
}

func CreateNewSubscriptionPost(w http.ResponseWriter, r *http.Request) {
    var nfinstancesub Subscriptions
    id := uuid.New()
    subscriptionID := id.String()

    if r.Header.Get("Accept") != "application/json" {
        WriteError(w, ErrNotAcceptable)
        return
    }
    if err := json.NewDecoder(r.Body).Decode(&nfinstancesub); err != nil {
        respondWithError(w, http.StatusBadRequest, "Invalid request payload")
        return
    }
    nfinstancesub.ID = bson.NewObjectId()
    nfinstancesub.SubscriptionID = subscriptionID
    if err := da.Insertsub(nfinstancesub); err != nil {
        respondWithError(w, http.StatusInternalServerError, err.Error())
        return
    }
    w.Header().Set("Response-Code", "201")
    w.Header().Set("Response-Desc", "Success")
    w.Header().Set("Cache-Control", "max-age=2592000") // 30 days
    respondWithJson(w, http.StatusCreated, nfinstancesub)
}

// основная функция

func main() {
    http.HandleFunc("/nnrf-nfm/v1/subscriptions, CreateNewSubscriptionPost)

    log.Fatal(http.ListenAndServe(":8080", nil))
}

JSONданные для запроса подписки, включая поле uri «nfStatusNotificationUri» уведомления.Я использую mongodb для хранения этого запроса данных JSON отправлено.

{
  "nfStatusNotificationUri": "string",
  "subscriptionID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "validityTime": "2019-02-11T09:45:52.015Z",
  "reqNotifEvents": [
    "NF_REGISTERED",
    "string"
  ],
  "plmnId": {
    "mcc": "string",
    "mnc": "string"
  },
  "notifCondition": {
    "monitoredAttributes": [
      "string"
    ],
    "unmonitoredAttributes": [
      "string"
    ]
  },
  "reqNfFqdn": "string"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...