Я пытаюсь реализовать случай, когда клиент отправляет 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"
}